const mongoose = require('mongoose');
/**
 * role type
 * @typedef {object} role
 * @property {string} name - 角色名称
 * @property {string} description - 角色描述
 * @property {array<string>} permissions - 权限列表
 * @property {boolean} active - 状态
 * @property {boolean} isAdmin - 是否为管理员
 * @property {string} createBy - 创建人
 * @property {string} updateBy - 更新人
 * @property {array<string>} menus - 菜单列表id

 */
const RoleSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        unique: true,
    },
    description: {
        type: String,
        required: true,
    },
    permissions: [{
        type: String,
        required: true
    }],
    active: {
        type: Boolean,
        default: true,
    },
    isAdmin: {
        type: Boolean,
        default: false,
        required: true,
    },
    createdAt: { type: Date, default: Date.now },
    updatedAt: { type: Date, default: Date.now },
    menus: [{
        type: String,
    }]
});
// 权限常量定义 - 可以根据实际需求扩展
RoleSchema.statics.PERMISSIONS = {
    // 用户管理
    "用户管理": {
        "创建用户": "user:create",
        "读取用户": "user:read",
        "更新用户": "user:update",
        "删除用户": "user:delete",
    },
    // 权限管理
    // "权限管理": {
    //     // "创建权限": "permission:create",
    //     // "读取权限": "permission:read",
    //     // "更新权限": "permission:update",
    //     // "删除权限": "permission:delete",
        
    // },

    // 角色管理
    "角色管理": {
        "创建角色": "role:create",
        "读取角色": "role:read",
        "更新角色": "role:update",
        "删除角色": "role:delete",
        
    },
    // 菜单管理
    "菜单管理": {
        "创建菜单": "menu:create",
        "读取菜单": "menu:read",
        "更新菜单": "menu:update",
        "删除菜单": "menu:delete",
    },
    // 分配管理
    "分配管理": {
        "分配菜单": "menu:assign",
        "分配角色": "role:assign",
        "分配权限": "permission:assign",
    }
}
module.exports = mongoose.model('Role', RoleSchema);